A field programmable gate array (FPGA) is an integrated circuit designed to be configured by an end user after manufacture of the FPGA, hence the term “field programmable”. One or more blocks of a FPGA can be configured, wherein the configuration can occur during initial implementation (e.g., activation) of the FPGA, or at any time thereafter. Accordingly, it may be desired to know when a configuration applied to the FPGA has been modified. For example, a FPGA may be incorporated into a system monitoring operation of a machine, e.g., via measurements being received at the FPGA from a plurality of sensors. A technician may have configured the FPGA to monitor the sensors in a particular manner, e.g., a particular sensor(s) is located at a particular input(s), a magnitude of reading is configured in accordance with a magnitude of a signal being received from a sensor, etc. Accordingly, the technician does not want the FPGA to be reconfigured during the machine monitoring period. Thus, if the FPGA is reconfigured, the technician would like to know immediately of such reconfiguration. The reconfiguration may occur for a multitude of reasons, such as accidental reconfiguration, component failure, malicious intent, etc.
In a conventional approach, a FPGA can have a particular configuration applied thereto, and a “configuration setting” can be retained in memory of the FPGA. The configuration setting can be transmitted to a monitoring system, e.g., a remotely located computer, where it is stored as an initial configuration for future comparison. At a subsequent time, a current configuration setting can be re-transmitted from the FPGA to the computer, wherein the computer can compare the current transmitted setting with the previously stored initial setting. If the settings match, then the FPGA has not been modified, whereas, if the settings do not match, then the FPGA can be considered to have undergone reconfiguration. However, the conventional approach renders the system susceptible to attack (e.g., a man-in-the-middle attack), as the configuration setting being transmitted from the FPGA can be captured and utilized maliciously. For example, in a malicious attack (e.g., a replay attack), the configuration setting can continue to be transmitted to the computer even though the FPGA has undergone reconfiguration.